//
//  MKUICollectionViewSupplementaryElementProtocol.h
//  MKUI
//	集合分组的补充视图要实现的协议
//  Created by sushangjin on 15/9/15.
//  Copyright © 2020 sushangjin. All rights reserved.
//

#import <Foundation/Foundation.h>

#ifndef MKDEF_MKUICollectionViewSectionModel
#define MKDEF_MKUICollectionViewSectionModel(clazz,property) \
- (MKUICollectionViewSectionModel *)sectionModel{\
	return self.property;\
}\
- (void)setCollectionSectionModel:(MKUICollectionViewSectionModel *)sectionModel forKind:(NSString *)kind{\
	self.property = (clazz *)sectionModel;\
}
#endif

NS_ASSUME_NONNULL_BEGIN

@class MKUICollectionViewSectionModel;

@protocol MKUICollectionViewSupplementaryElementProtocol <NSObject>
/**
 *  设置补充视图所在的分组以及类型
 *
 *  @param sectionModel 分组数据
 *  @param kind         类型
 */
- (void)setCollectionSectionModel:(nullable __kindof  MKUICollectionViewSectionModel *)sectionModel forKind:(NSString *)kind;

@optional
/**
 *  返回视图的尺寸,UICollectionViewDelegateFlowLayout使用
 *
 *  @param collectionView 集合
 *  @param sectionModel   分组
 *  @param kind           类型
 *
 *  @return 尺寸值
 */
+ (CGSize)referenceSizeWithCollectionView:(UICollectionView *)collectionView collectionSectionModel:(__kindof MKUICollectionViewSectionModel *)sectionModel forKind:(NSString *)kind;

/// 集合分组视图将要被显示的回调。
/// @param collectionView 集合视图
/// @param sectionModel 分组
/// @param kind 类别
- (void)collectionView:(UICollectionView *)collectionView willDisplaySectionModel:(__kindof MKUICollectionViewSectionModel *)sectionModel kind:(NSString *)kind;

/// 集合分组视图完成显示的回调。
/// @param collectionView 集合视图
/// @param sectionModel 分组
/// @param kind 类别
- (void)collectionView:(UICollectionView *)collectionView didEndDisplayingSectionModel:(__kindof MKUICollectionViewSectionModel *)sectionModel kind:(NSString *)kind;
@end

NS_ASSUME_NONNULL_END
